package control;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modelo.*;
import persistencia.*;

@WebServlet(urlPatterns = {"/agregarConcierto"})
public class NewConcertServlet extends HttpServlet {

    //Se recogen todos los valores del campo del registro.
    //Se crea la variable fecha, se crea el concierto a partir de los valores anteriores y se inserta en la BD.
    //Se informa al usuario de lo ocurrido en el proceso.
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        String desc = request.getParameter("descripcion");
        String genero = request.getParameter("genero");
        String fecha = request.getParameter("fecha");
        String lugar = request.getParameter("lugar");
        String aforo = request.getParameter("aforo");
        String precio = request.getParameter("precio");
        
        try
        {
            DateFormat  df = new SimpleDateFormat("yyyy-MM-dd");
            Concierto conc = new Concierto(desc, genero, df.parse(fecha), lugar, Integer.parseInt(aforo), Float.parseFloat(precio));
            PersistenciaBD persistencia = PersistenciaBD.getInstance();

            if (persistencia.addConcierto(conc))
            {
                request.setAttribute("descripcion", "");
                request.setAttribute("genero", "");
                request.setAttribute("fecha", "");
                request.setAttribute("lugar", "");
                request.setAttribute("aforo", "");
                request.setAttribute("precio", "");
                request.setAttribute("mensaje", "Concierto Creado correctamente");
            }
            else
            {
                request.setAttribute("mensaje", "Fallo en addConcert");
            }
        } 
        catch (NumberFormatException | ParseException e)
        {
            request.setAttribute("mensaje", "Fallo creando el concierto");
        }
        request.getRequestDispatcher("admin/agregarConcierto.jsp").forward(request, response);
    }
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Servlet para registrar conciertos";
    }
}